package com.deng.eventflow.core;

import com.deng.eventflow.core.exception.PushNotSupported;
import com.deng.eventflow.core.exception.PushableException;

import java.util.concurrent.Future;

public interface Pushable {

    Pushable push(Object o);

    Future<Pushable> pushFast(Object o);

    void notifyEndOfTrace() throws PushableException;

    Processor getProcessor();

    int getPosition();

    FutureDone<Pushable> NULL_FUTURE = new FutureDone<Pushable>(
            new PushNotSupported(null, 0));

}
